package br.com.estagio.application.managedbens;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ComponentSystemEvent;

import org.primefaces.context.RequestContext;

import br.com.estagio.domain.entity.Estado;
import br.com.estagio.domain.entity.Pais;
import br.com.estagio.domain.service.EstadoService;

@ManagedBean
@ViewScoped
public class EstadoBean {

	private EstadoService estadoService = new EstadoService();

	private Estado currentEstado = new Estado();
	
	private List<Estado> estados;
	
	private Pais selectedPais;
	/*-------------------------------------------------------------------
	 *				 		   CONSTRUCTORS
	 *-------------------------------------------------------------------*/
	
	public EstadoBean() {
	
	}
	/*-------------------------------------------------------------------
	 *				 		   BEHAVIORS
	 *-------------------------------------------------------------------*/
	


	public void initialize(ComponentSystemEvent event) {
		this.estadoService = new EstadoService();
		if (!FacesContext.getCurrentInstance().isPostback()) {
			if (this.getCurrentEstado().getPais() == null) {
				this.setCurrentEstado(new Estado());
				this.getCurrentEstado().setPais(new Pais());
			}
		}
	}
	
//	@PostConstruct
	public void initializeList(ComponentSystemEvent event){
		this.fillEstados();
		this.estadoService = new EstadoService();
		this.setCurrentEstado(new Estado());
		this.getCurrentEstado().setPais(new Pais());
	}
	
	public void fillEstados() {
		this.estados = this.estadoService.listEstados();
	}
	
	public void save() {
		try
		{
			this.estadoService.insert(this.getCurrentEstado());
			
			RequestContext.getCurrentInstance().update("tableEstado");
		}
		catch ( Exception e )
		{
			e.printStackTrace();
		}
			
			
	}
	
	public void addPais() {
		
		this.currentEstado.setPais(this.getSelectedPais());
		this.setSelectedPais(null);

		RequestContext.getCurrentInstance().update("inputPaisId");
		RequestContext.getCurrentInstance().update("inputPais");
		RequestContext.getCurrentInstance().update("inputPaisSigla");
		RequestContext.getCurrentInstance().update("inputPaisDdi");
		RequestContext.getCurrentInstance().execute("dialogListPais.hide()");
	}
	
	/*-------------------------------------------------------------------
	 *				 		   NAVIGATION
	 *-------------------------------------------------------------------*/
	public String changeToNew() {
		this.setCurrentEstado(new Estado());
		this.getCurrentEstado().setPais(new Pais());
		return "/views/estado/formEstado?faces-redirect=true";
	}

	public String changeToList() {
		return "/views/estado/listEstado?faces-redirect=true";
	}
	
	public void closeDialogListPais() {
		RequestContext.getCurrentInstance().execute("dialogListPais.hide()");
	}
	
	public void openDialogListPais() {
		this.setCurrentEstado(new Estado());
		this.getCurrentEstado().setPais(new Pais());
		
		RequestContext.getCurrentInstance().update("listDialogPais");
		RequestContext.getCurrentInstance().execute("dialogListPais.show()");		
	}

	/*-------------------------------------------------------------------
	 *				 		   GETTERS AND SETTERS
	 *-------------------------------------------------------------------*/
	public EstadoService getEstadoService() {
		return estadoService;
	}

	public void setEstadoService(EstadoService estadoService) {
		this.estadoService = estadoService;
	}

	public Estado getCurrentEstado() {
		return currentEstado;
	}

	public void setCurrentEstado(Estado currentEstado) {
		this.currentEstado = currentEstado;
	}

	public List<Estado> getEstados() {
		return estados;
	}

	public void setEstados(List<Estado> estados) {
		this.estados = estados;
	}

	public Pais getSelectedPais() {
		return selectedPais;
	}

	public void setSelectedPais(Pais selectedPais) {
		this.selectedPais = selectedPais;
	}
	
}
